package com.qf.service.impl;

import com.qf.dao.MenuMapper;
import com.qf.pojo.Menu;
import com.qf.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 2019/11/23 0023
 * Author->DT
 * qmxc
 * 行到水穷处 坐看云起时
 * 模块：
 */
@Service
public class MenuServiceImpl implements MenuService {
    @Autowired
    private MenuMapper menuMapper;
    //查询出所有Menu列表
    @Override
    public List<Menu> findAll() {
        List<Menu> menuList = menuMapper.selectAllMenu();
        //新建存取一级菜单的列表
        ArrayList<Menu> firstList = new ArrayList<>();
        //遍历查询出来的菜单列表
        for (Menu menu : menuList) {
            //判断menu是否为一级菜单
            if (menu.getParentId() == 0) {
                //当前菜单为一级菜单
                //创建二级菜单列表
                ArrayList<Menu> secondList = new ArrayList<>();
                //第二次遍历菜单列表，用来查询出对应一级菜单的二级菜单；
                for (Menu menu2 : menuList) {
                    //判断是否为当前一级菜单对应的二级菜单：
                    if (menu.getMid() == menu2.getParentId()) {
                        //当前菜单为当前一级菜单对应的二级菜单
                        //加入到secondList中
                        secondList.add(menu2);
                    }
                }
                //遍历查询当前菜单的二级菜单结束，将查询到的二级菜单赋值到到当前菜单中；
                menu.setSecondMenu(secondList);
                firstList.add(menu);
            }
        }
        System.out.println(firstList);
        return firstList;
    }

    //修改指定rid的的角色-菜单信息
    @Override
    public Integer updateRoleMenuByRoleId(Integer rid,Integer[] mids) {
        //删除原来该角色对应的角色-菜单信息
        menuMapper.deleteRoleMenuByRoleId(rid);
        // 然后再增加新的菜单角色-菜单信息
        //封装查询条件参数为map：
        Map map=new HashMap();
        map.put("rid", rid);
        map.put("mids", mids);
        Integer count=menuMapper.insertRoleMenuByRoleId(map);
        return count;
    }
    //删除角色菜单数据表中该角色id对应的信息
    @Override
    public Integer deleteRoleMenuByRoleId(Integer rid) {
        return menuMapper.deleteRoleMenuByRoleId(rid);
    }
    //删除角色表
    @Override
    public Integer deleteRoleByRoleId(Integer rid) {
        return menuMapper.deleteRoleByRoleId(rid);
    }
}
